package Structure1.net.linearlist.impl;

import Structure1.net.linearlist.MyLinearList;

import java.lang.reflect.Array;

/**
 * Created by Administrator on 2017/3/2.
 */
public class SeqList<E> implements MyLinearList<E> {
//    定义一个数组
    private E[] data;
//    定义一个索引
    private int size;
//    表示数组的最大长度
    private int maxSize;
//    插入的位置
    private int position;

//    初始化


    public SeqList(Class<E> type , int maxSize) {
//        让数组工具帮我们new，给个累名和长度
        data = (E[]) Array.newInstance(type,maxSize);
        size = 0;
        this.maxSize = maxSize;
    }

    //    添加元素：
    @Override
    public void add(E e) {
//        判断空间是否够用
        if (size >= maxSize) {
            throw new RuntimeException("越界");
        }
        data[size] = e;
        size++;
    }
//    插入元素：
    @Override
    public void add(int i, E e) {
        if  (i < 0 || i > size)
            throw new IndexOutOfBoundsException("Index:" + i + ", Size:" + size);
        if (isEmpty()) {
            for (int j = size - 1;j >= i; j--) {
                data[j + 1] = data[j];
            }
            data[i] = e;
            size++;

        }
    }
//    删除元素：
    @Override
    public void remove(int i) {

    }
//    定位元素：
    @Override
    public int indexOf(E e) {
        return 0;
    }
//    取表元素：
    @Override
    public E get(int i) {
        return null;
    }
//    修改元素：
    @Override
    public void edit(int i, E e) {

    }
//    求元素个数：
    @Override
    public int getSize() {
        return 0;
    }
//    清空元素：
    @Override
    public void clear() {

    }
//    判断线形表是否为空：
    @Override
    public boolean isEmpty() {
        if (size == 0) {
            return true;
        } else
        return false;
    }
}
